package com.test.syncTest;


/**
 *
 * synchronized 关键字锁定的是对象， 不是方法。
 *
 *
 */
public class SyncTest1 {

    public synchronized void method1(){
        System.out.println("method1 ... ");
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    /**
     * 如果method2去除synchronized关键字， 那么main执行的时候就是异步
     * 不删除synchronized关键字，那么在调用method1的时候，先睡眠4s，因为
     * t1先获取 test1对象， 等他用完了， t2才能执行
     */
    public synchronized void method2() {
        System.out.println("method2...");
    }



    public static void main(String[] args){

        SyncTest1 test1 = new SyncTest1();

        Thread t1 = new Thread(test1::method1);
        Thread t2 = new Thread(test1::method2) ;

        t1.start();
        t2.start();

    }


}
